package com.lad.pdfdemo.component;

import com.lad.pdfdemo.entity.Product;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfWriter;
import org.springframework.web.servlet.view.document.AbstractPdfView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class ViewPDF extends AbstractPdfView {

    /**
     * 仔细观察这个类，看父类的bulidPdfDocument（），发现其中的document要求的是这个com.lowagie.text.Document版本的，
     * 这就非常坑了，意味着之前的itextpdf-5.0.6.jar不能再用了，只能用老版本的（改名之前的）itext-2.1.7.jar了。
     */
    @Override
    protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,
                                    HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开
        String fileName = new Date().getTime()+"_quotation.pdf";
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition","filename=" + new String(fileName.getBytes(), "iso8859-1"));
        /**
         * 如果不想要这种直接在浏览器中预览的效果，而是直接下载文件的话就把response.setHeader()
         * 方法里面的参数改成下面的，相当于加了一个attachment，以附件形式下载
         */
        //response.setHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes(), "iso8859-1"));
        List<Product> products = (List<Product>) model.get("sheet");
        PdfUtil pdfUtil = new PdfUtil();
        pdfUtil.createPDF(document, writer, products);
    }
}